

from xpy3lib.XRetryableQuery import XRetryableQuery
from xpy3lib.XRetryableSave import XRetryableSave
from sicost.AbstractDPJob import AbstractDPJob
import sys, datetime, json
import pandas as pd
import numpy as np

from numpy import array
import cvxpy as cp


class CheckJob(AbstractDPJob):


    def __init__(self,
                 p_body_dict=None):


        super(CheckJob, self).__init__(p_config=None,
                                        p_db_conn_mpp=None,
                                        p_db_conn_rds=None,
                                        p_db_conn_dbprod7=None,
                                        p_unit=None,
                                        p_account=None,
                                        p_cost_center=None,
                                        p_account_period_start=None,
                                        p_account_period_end=None)
        self.body_dict = p_body_dict

        pass


    def execute(self):
        return self.do_execute()


    def do_execute(self):

        super(CheckJob, self).do_execute()
        # PSO的参数
        w = 0.8  # 惯性因子，一般取1
        c1 = 2  # 学习因子，一般取2
        c2 = 2  #
        dim = 20  # 维度的维度
        size = 100  # 种群大小，即种群中小鸟的个数
        iter_num = 10000  # 算法最大迭代次数
        max_vel = 0.5  # 限制粒子的最大速度




        """
        通过JSON传入参数
        """
        start = datetime.datetime.now()
        # path = './test_20221025.json'
        # with open(path, 'r') as f:
        #     row_data = json.load(f)
        # if (row_data is None):
        #     sys.exit(1)
        row_data = self.body_dict
        price_lianjiaomei = row_data['price_lianjiaomei']
        kongmeizhibiao = row_data['kongmeizhibiao']
        tieshuichanliang = row_data['tieshuichanliang']
        jiaotanchanliang = row_data['jiaotanchanliang']
        fadianliang = row_data['fadianliang']
        shaojiechanliang = row_data['shaojiechanliang']
        zongmeibi = row_data['zongmeibi']
        zongjiaobi = row_data['zongjiaobi']
        shaojieranliaobi = row_data['shaojieranliaobi']
        chengjiaolv = row_data['chengjiaolv']
        yejinjiaolv = row_data['yejinjiaolv']
        cujiaolv = row_data['cujiaolv']
        meidianbi = row_data['meidianbi']
        fadianmeihao = row_data['fadianmeihao']
        lianjiaomeishuifen = row_data['lianjiaomeishuifen']
        penchuimeishuifen = row_data['penchuimeishuifen']
        shaojiemeishuifen = row_data['shaojiemeishuifen']
        CDQbi = row_data['CDQbi']
        meitanwushunlv = row_data['meitankuisunlv']
        waigoujiaoshuifen = row_data['waigoujiaoshuifen']
        waigoujiaofenlv = row_data['waigoujiaofenlv']
        shaojiejiaofenshuifen = row_data['shaojiejiaofenshuifen']
        lantanshuifen = row_data['lantanshuifen']
        jiaotanchaochanlv = row_data['jiaotanchaochanlv']
        chunmeibi = zongmeibi - CDQbi
        shenfu_penchui_price = row_data['shenfu_penchui_price']
        eluosi_penchui_price = row_data['eluosi_penchui_price']
        yongxia_penchui_price = row_data['yongxia_penchui_price']
        yongcheng_penchui_price = row_data['yongcheng_penchui_price']
        changcun_penchui_price = row_data['changcun_penchui_price']
        gaoping_penchui_price = row_data['gaoping_penchui_price']
        zhaozhuang_penchui_price = row_data['zhaozhuang_penchui_price']
        yangquan2_penchui_price = row_data['yangquan2_penchui_price']
        shenfu_penchui_kegongziyuan = row_data['shenfu_penchui_kegongziyuan']
        eluosi_penchui_kegongziyuan = row_data['eluosi_penchui_kegongziyuan']
        yongxia_penchui_kegongziyuan = row_data['yongxia_penchui_kegongziyuan']
        yongcheng_penchui_kegongziyuan = row_data['yongcheng_penchui_kegongziyuan']
        changcun_penchui_kegongziyuan = row_data['changcun_penchui_kegongziyuan']
        gaoping_zhaozhuang_yangquan2_penchui_kegongziyuan = row_data['gaoping_zhaozhuang_yangquan2_penchui_kegongziyuan']

        datongpeiQ5800_fadian_price = row_data['datongpeiQ5800_fadian_price']
        datongpeiQ5500_fadian_price = row_data['datongpeiQ5500_fadian_price']
        datongpeiQ5200_fadian_price = row_data['datongpeiQ5200_fadian_price']
        datongpeiQ5000_fadian_price = row_data['datongpeiQ5000_fadian_price']
        shenfuyuan_fadian_price = row_data['shenfuyuan_fadian_price']
        shenfupei_fadian_price = row_data['shenfupei_fadian_price']
        shenyou2_fadian_price = row_data['shenyou2_fadian_price']
        shenwai3_fadian_price = row_data['shenwai3_fadian_price']
        dianchanglantan_fadian_price = row_data['dianchanglantan_fadian_price']
        price_dianchanglantan = dianchanglantan_fadian_price

        datongpeiQ5800_fadian_kegongziyuan = row_data['datongpeiQ5800_fadian_kegongziyuan']
        datongpeiQ5500_fadian_kegongziyuan = row_data['datongpeiQ5500_fadian_kegongziyuan']
        datongpeiQ5200_fadian_kegongziyuan = row_data['datongpeiQ5200_fadian_kegongziyuan']
        datongpeiQ5000_fadian_kegongziyuan = row_data['datongpeiQ5000_fadian_kegongziyuan']
        shenfuyuan_fadian_kegongziyuan = row_data['shenfuyuan_fadian_kegongziyuan']
        shenfupei_fadian_kegongziyuan = row_data['shenfupei_fadian_kegongziyuan']
        waigoujiaofen_shaojie_price = row_data['waigoujiaofen_shaojie_price']
        jiaozuo_shaojie_price = row_data['jiaozuo_shaojie_price']
        jincheng_shaojie_price = row_data['jincheng_shaojie_price']
        shaojielantan_shaojie_price = row_data['shaojielantan_shaojie_price']
        price_waigoujiaotan = waigoujiaofen_shaojie_price
        price_shaojiejiaofen = shaojielantan_shaojie_price

        jiaozuo_shaojie_kegongziyuan = row_data['jiaozuo_shaojie_kegongziyuan']
        jincheng_shaojie_kegongziyuan = row_data['jincheng_shaojie_kegongziyuan']
        shaojielantan_shaojie_kegongziyuan = row_data['shaojielantan_shaojie_kegongziyuan']
        gaizhilantan_penchui_price = row_data['gaizhilantan_penchui_price']
        tizhijiaofen_penchui_price = row_data['tizhijiaofen_penchui_price']
        dingzhilantan_penchui_price = row_data['dingzhilantan_penchui_price']
        gaizhilantan_penchui_kegongziyuan = row_data['gaizhilantan_penchui_kegongziyuan']
        tizhijiaofen_penchui_kegongziyuan = row_data['tizhijiaofen_penchui_kegongziyuan']
        dingzhilantan_penchui_kegongziyuan = row_data['dingzhilantan_penchui_kegongziyuan']
        # 计算量
        # 喷吹煤
        CAL_WT_penchuimei = tieshuichanliang * chunmeibi / 1000 / (100 - penchuimeishuifen) * 100 * (100 + meitanwushunlv) / 100
        # 炼焦煤
        CAL_WT_lianjiaomei = jiaotanchanliang / chengjiaolv * 100 / (100 - lianjiaomeishuifen) * 100 * (100 + meitanwushunlv) / 100
        WT_lianjiaomei = CAL_WT_lianjiaomei * (100 + jiaotanchaochanlv) / 100

        # 发电煤
        CAL_WT_fadianmei = fadianliang * meidianbi / 100 * fadianmeihao / 100 * (100 + meitanwushunlv) / 100
        # 烧结煤
        CAL_WT_shaojiemei = (shaojiechanliang * shaojieranliaobi / 1000 - jiaotanchanliang * cujiaolv / 100) / (100 - shaojiemeishuifen) * 100 * (100 + meitanwushunlv) / 100
        # 外购焦炭    （补炼焦煤）
        WT_waigoujiaotan = (tieshuichanliang * zongjiaobi / 1000 - jiaotanchanliang * yejinjiaolv / 100) / (100 - waigoujiaofenlv) * 100 / (100 - waigoujiaoshuifen) * 100
        p_max_constant = 100000
        pm1_shui = row_data['pm1_shui']
        pm2_shui = row_data['pm2_shui']
        pm3_shui = row_data['pm3_shui']
        pm4_shui = row_data['pm4_shui']
        pm5_shui = row_data['pm5_shui']
        pm6_shui = row_data['pm6_shui']
        pm7_shui = row_data['pm7_shui']
        pm8_shui = row_data['pm8_shui']
        pl1_shui = row_data['pl1_shui']
        pl2_shui = row_data['pl2_shui']
        pl3_shui = row_data['pl3_shui']
        p_shui_max = row_data['p_shui_max']
        p_shui_min = row_data['p_shui_min']
        pm1_hui = row_data['pm1_hui']
        pm2_hui = row_data['pm2_hui']
        pm3_hui = row_data['pm3_hui']
        pm4_hui = row_data['pm4_hui']
        pm5_hui = row_data['pm5_hui']
        pm6_hui = row_data['pm6_hui']
        pm7_hui = row_data['pm7_hui']
        pm8_hui = row_data['pm8_hui']
        pl1_hui = row_data['pl1_hui']
        pl2_hui = row_data['pl2_hui']
        pl3_hui = row_data['pl3_hui']
        p_hui_max = row_data['p_hui_max']
        p_hui_min = row_data['p_hui_min']
        pm1_huifa = row_data['pm1_huifa']
        pm2_huifa = row_data['pm2_huifa']
        pm3_huifa = row_data['pm3_huifa']
        pm4_huifa = row_data['pm4_huifa']
        pm5_huifa = row_data['pm5_huifa']
        pm6_huifa = row_data['pm6_huifa']
        pm7_huifa = row_data['pm7_huifa']
        pm8_huifa = row_data['pm8_huifa']
        pl1_huifa = row_data['pl1_huifa']
        pl2_huifa = row_data['pl2_huifa']
        pl3_huifa = row_data['pl3_huifa']
        p_huifa_max = row_data['p_huifa_max']
        p_huifa_min = row_data['p_huifa_min']
        pm1_liu = row_data['pm1_liu']
        pm2_liu = row_data['pm2_liu']
        pm3_liu = row_data['pm3_liu']
        pm4_liu = row_data['pm4_liu']
        pm5_liu = row_data['pm5_liu']
        pm6_liu = row_data['pm6_liu']
        pm7_liu = row_data['pm7_liu']
        pm8_liu = row_data['pm8_liu']
        pl1_liu = row_data['pl1_liu']
        pl2_liu = row_data['pl2_liu']
        pl3_liu = row_data['pl3_liu']
        p_liu_max = row_data['p_liu_max']
        p_liu_min = row_data['p_liu_min']
        pm1_gu = row_data['pm1_gu']
        pm2_gu = row_data['pm2_gu']
        pm3_gu = row_data['pm3_gu']
        pm4_gu = row_data['pm4_gu']
        pm5_gu = row_data['pm5_gu']
        pm6_gu = row_data['pm6_gu']
        pm7_gu = row_data['pm7_gu']
        pm8_gu = row_data['pm8_gu']
        pl1_gu = row_data['pl1_gu']
        pl2_gu = row_data['pl2_gu']
        pl3_gu = row_data['pl3_gu']
        p_gu_max = row_data['p_gu_max']
        # 改了
        p_gu_min = row_data['p_gu_min']
        pm1_mo = row_data['pm1_mo']
        pm2_mo = row_data['pm2_mo']
        pm3_mo = row_data['pm3_mo']
        pm4_mo = row_data['pm4_mo']
        pm5_mo = row_data['pm5_mo']
        pm6_mo = row_data['pm6_mo']
        pm7_mo = row_data['pm7_mo']
        pm8_mo = row_data['pm8_mo']
        pl1_mo = row_data['pl1_mo']
        pl2_mo = row_data['pl2_mo']
        pl3_mo = row_data['pl3_mo']
        p_mo_max = row_data['p_mo_max']
        p_mo_min = row_data['p_mo_min']
        pm1_re = row_data['pm1_re']
        pm2_re = row_data['pm2_re']
        pm3_re = row_data['pm3_re']
        pm4_re = row_data['pm4_re']
        pm5_re = row_data['pm5_re']
        pm6_re = row_data['pm6_re']
        pm7_re = row_data['pm7_re']
        pm8_re = row_data['pm8_re']
        pl1_re = row_data['pl1_re']
        pl2_re = row_data['pl2_re']
        pl3_re = row_data['pl3_re']
        p_re_max = row_data['p_re_max']
        p_re_min = row_data['p_re_min']
        pm1_c = row_data['pm1_c']
        pm2_c = row_data['pm2_c']
        pm3_c = row_data['pm3_c']
        pm4_c = row_data['pm4_c']
        pm5_c = row_data['pm5_c']
        pm6_c = row_data['pm6_c']
        pm7_c = row_data['pm7_c']
        pm8_c = row_data['pm8_c']
        pl1_c = row_data['pl1_c']
        pl2_c = row_data['pl2_c']
        pl3_c = row_data['pl3_c']
        p_c_max = row_data['p_c_max']
        p_c_min = row_data['p_c_min']

        dm1_shui = row_data['dm1_shui']
        dm2_shui = row_data['dm2_shui']
        dm3_shui = row_data['dm3_shui']
        dm4_shui = row_data['dm4_shui']
        dm5_shui = row_data['dm5_shui']
        dm6_shui = row_data['dm6_shui']
        dl1_shui = row_data['dl1_shui']
        # 改了
        d_shui_max = row_data['d_shui_max']
        d_shui_min = row_data['d_shui_min']
        dm1_hui = row_data['dm1_hui']
        dm2_hui = row_data['dm2_hui']
        dm3_hui = row_data['dm3_hui']
        dm4_hui = row_data['dm4_hui']
        dm5_hui = row_data['dm5_hui']
        dm6_hui = row_data['dm6_hui']
        dl1_hui = row_data['dl1_hui']
        d_hui_max = row_data['d_hui_max']
        d_hui_min = row_data['d_hui_min']
        dm1_huifa = row_data['dm1_huifa']
        dm2_huifa = row_data['dm2_huifa']
        dm3_huifa = row_data['dm3_huifa']
        dm4_huifa = row_data['dm4_huifa']
        dm5_huifa = row_data['dm5_huifa']
        dm6_huifa = row_data['dm6_huifa']
        dl1_huifa = row_data['dl1_huifa']
        d_huifa_max = row_data['d_huifa_max']
        d_huifa_min = row_data['d_huifa_min']
        dm1_liu = row_data['dm1_liu']
        dm2_liu = row_data['dm2_liu']
        dm3_liu = row_data['dm3_liu']
        dm4_liu = row_data['dm4_liu']
        dm5_liu = row_data['dm5_liu']
        dm6_liu = row_data['dm6_liu']
        dl1_liu = row_data['dl1_liu']
        d_liu_max = row_data['d_liu_max']
        d_liu_min = row_data['d_liu_min']
        dm1_gu = row_data['dm1_gu']
        dm2_gu = row_data['dm2_gu']
        dm3_gu = row_data['dm3_gu']
        dm4_gu = row_data['dm4_gu']
        dm5_gu = row_data['dm5_gu']
        dm6_gu = row_data['dm6_gu']
        dl1_gu = row_data['dl1_gu']
        d_gu_max = row_data['d_gu_max']
        d_gu_min = row_data['d_gu_min']
        dm1_re = row_data['dm1_re']
        dm2_re = row_data['dm2_re']
        dm3_re = row_data['dm3_re']
        dm4_re = row_data['dm4_re']
        dm5_re = row_data['dm5_re']
        dm6_re = row_data['dm6_re']
        dm7_re = row_data['dm7_re']
        dm8_re = row_data['dm8_re']
        dl1_re = row_data['dl1_re']
        d_re_max = row_data['d_re_max']
        d_re_min = row_data['d_re_min']
        dm1_c = row_data['dm1_c']
        dm2_c = row_data['dm2_c']
        dm3_c = row_data['dm3_c']
        dm4_c = row_data['dm4_c']
        dm5_c = row_data['dm5_c']
        dm6_c = row_data['dm6_c']
        dl1_c = row_data['dl1_c']
        d_c_max = row_data['d_c_max']
        d_c_min = row_data['d_c_min']

        sm1_shui = row_data['sm1_shui']
        sm2_shui = row_data['sm2_shui']
        sl1_shui = row_data['sl1_shui']

        s_shui_max = row_data['s_shui_max']
        s_shui_min = row_data['s_shui_min']
        sm1_hui = row_data['sm1_hui']
        sm2_hui = row_data['sm2_hui']
        sl1_hui = row_data['sl1_hui']

        s_hui_max = row_data['s_hui_max']
        s_hui_min = row_data['s_hui_min']
        sm1_huifa = row_data['sm1_huifa']
        sm2_huifa = row_data['sm2_huifa']
        sl1_huifa = row_data['sl1_huifa']
        # 改了
        s_huifa_max = row_data['s_huifa_max']
        s_huifa_min = row_data['s_huifa_min']
        sm1_liu = row_data['sm1_liu']
        sm2_liu = row_data['sm2_liu']
        sl1_liu = row_data['sl1_liu']

        s_liu_max = row_data['s_liu_max']
        s_liu_min = row_data['s_liu_min']
        sm1_gu = row_data['sm1_gu']
        sm2_gu = row_data['sm2_gu']
        sl1_gu = row_data['sl1_gu']

        s_gu_max = row_data['s_gu_max']
        s_gu_min = row_data['s_gu_min']
        sm1_mo = row_data['sm1_mo']
        sm2_mo = row_data['sm2_mo']
        sl1_mo = row_data['sl1_mo']

        s_mo_max = row_data['s_mo_max']
        s_mo_min = row_data['s_mo_min']
        sm1_re = row_data['sm1_re']
        sm2_re = row_data['sm2_re']
        sl1_re = row_data['sl1_re']

        s_re_max = row_data['s_re_max']
        s_re_min = row_data['s_re_min']
        sm1_c = row_data['sm1_c']
        sm2_c = row_data['sm2_c']
        sl1_c = row_data['sl1_c']

        s_c_max = row_data['s_c_max']
        s_c_min = row_data['s_c_min']

        p1_1_ratio_min = row_data['p1_1_ratio_min']
        p1_1_ratio_max = row_data['p1_1_ratio_max']
        p_1_ratio_min = row_data['p_1_ratio_min']
        p_1_ratio_max = row_data['p_1_ratio_max']
        p2_2_ratio_min = row_data['p2_2_ratio_min']
        p2_2_ratio_max = row_data['p2_2_ratio_max']
        p3_2_ratio_min = row_data['p3_2_ratio_min']
        p3_2_ratio_max = row_data['p3_2_ratio_max']
        p4_2_ratio_min = row_data['p4_2_ratio_min']
        p4_2_ratio_max = row_data['p4_2_ratio_max']
        p5_2_ratio_min = row_data['p5_2_ratio_min']
        p5_2_ratio_max = row_data['p5_2_ratio_max']
        p6_2_ratio_min = row_data['p6_2_ratio_min']
        p6_2_ratio_max = row_data['p6_2_ratio_max']
        p7_2_ratio_min = row_data['p7_2_ratio_min']
        p7_2_ratio_max = row_data['p7_2_ratio_max']
        p8_2_ratio_min = row_data['p8_2_ratio_min']
        p8_2_ratio_max = row_data['p8_2_ratio_max']
        p_2_ratio_min = row_data['p_2_ratio_min']
        p_2_ratio_max = row_data['p_2_ratio_max']
        p9_3_ratio_min = row_data['p9_3_ratio_min']
        p9_3_ratio_max = row_data['p9_3_ratio_max']
        p10_3_ratio_min = row_data['p10_3_ratio_min']
        p10_3_ratio_max = row_data['p10_3_ratio_max']
        p11_3_ratio_min = row_data['p11_3_ratio_min']
        p11_3_ratio_max = row_data['p_3_ratio_min']
        p_3_ratio_min = row_data['p_3_ratio_min']
        p_3_ratio_max = row_data['p_3_ratio_max']

        d1_1_ratio_min = row_data['d1_1_ratio_min']
        d1_1_ratio_max = row_data['d1_1_ratio_max']
        d2_1_ratio_min = row_data['d2_1_ratio_min']
        d2_1_ratio_max = row_data['d2_1_ratio_max']
        d3_1_ratio_min = row_data['d3_1_ratio_min']
        d3_1_ratio_max = row_data['d3_1_ratio_max']
        d4_1_ratio_min = row_data['d4_1_ratio_min']
        d4_1_ratio_max = row_data['d4_1_ratio_max']
        d_1_ratio_min = row_data['d_1_ratio_min']
        d_1_ratio_max = row_data['d_1_ratio_max']
        d5_2_ratio_min = row_data['d5_2_ratio_min']
        d5_2_ratio_max = row_data['d5_2_ratio_max']
        d6_2_ratio_min = row_data['d6_2_ratio_min']
        d6_2_ratio_max = row_data['d6_2_ratio_max']
        d7_2_ratio_min = row_data['d7_2_ratio_min']
        d7_2_ratio_max = row_data['d7_2_ratio_max']
        d8_2_ratio_min = row_data['d8_2_ratio_min']
        d8_2_ratio_max = row_data['d8_2_ratio_max']
        d_2_ratio_min = row_data['d_2_ratio_min']
        d_2_ratio_max = row_data['d_2_ratio_max']
        d9_3_ratio_min = row_data['d9_3_ratio_min']
        d9_3_ratio_max = row_data['d9_3_ratio_max']
        d_3_ratio_min = row_data['d_3_ratio_min']
        d_3_ratio_max = row_data['d_3_ratio_max']

        s1_1_ratio_min = row_data['s1_1_ratio_min']
        s1_1_ratio_max = row_data['s1_1_ratio_max']
        s2_1_ratio_min = row_data['s2_1_ratio_min']
        s2_1_ratio_max = row_data['s2_1_ratio_max']
        s_1_ratio_min = row_data['s_1_ratio_min']
        s_1_ratio_max = row_data['s_1_ratio_max']
        s3_2_ratio_min = row_data['s3_2_ratio_min']
        s3_2_ratio_max = row_data['s3_2_ratio_max']
        s_2_ratio_min = row_data['s_2_ratio_min']
        s_2_ratio_max = row_data['s_2_ratio_max']

        # c1 = price_penchuimei
        c11 = shenfu_penchui_price
        c12 = eluosi_penchui_price
        c13 = yongxia_penchui_price
        c14 = yongcheng_penchui_price
        c15 = changcun_penchui_price
        c16 = gaoping_penchui_price
        c17 = zhaozhuang_penchui_price
        c18 = yangquan2_penchui_price
        # c2 = price_fadianmei
        c21 = datongpeiQ5800_fadian_price
        c22 = datongpeiQ5500_fadian_price
        c23 = datongpeiQ5200_fadian_price
        c24 = datongpeiQ5000_fadian_price
        c25 = shenfuyuan_fadian_price
        c26 = shenfupei_fadian_price
        c27 = shenyou2_fadian_price
        c28 = shenwai3_fadian_price
        # c3 = price_shaojiemei
        c31 = jiaozuo_shaojie_price
        c32 = jincheng_shaojie_price
        # c33 = waigoujiaofen_shaojie_price
        # c4 高炉兰炭价格
        c41 = gaizhilantan_penchui_price
        c42 = tizhijiaofen_penchui_price
        c43 = dingzhilantan_penchui_price

        cc5 = price_dianchanglantan
        cc6 = price_shaojiejiaofen

        a11 = (100 - penchuimeishuifen) / 100 / (100 + meitanwushunlv) * 100
        a12 = (100 - lantanshuifen) / 100
        a21 = 100 / (100 + meitanwushunlv)
        a22 = 100 / (100 + meitanwushunlv)
        a31 = (100 - shaojiemeishuifen) / 100 / (100 + meitanwushunlv) * 100
        a32 = (100 - shaojiejiaofenshuifen) / 100
        b0 = kongmeizhibiao - WT_lianjiaomei
        b1 = tieshuichanliang * chunmeibi / 1000
        b2 = fadianliang * meidianbi / 100 * fadianmeihao / 100 * (100 + meitanwushunlv) / 100
        b3 = shaojiechanliang * shaojieranliaobi / 1000 - jiaotanchanliang * cujiaolv / 100 - WT_waigoujiaotan * waigoujiaofenlv / 100 * (
                100 - waigoujiaoshuifen) / 100
        b011 = shenfu_penchui_kegongziyuan
        b012 = eluosi_penchui_kegongziyuan
        b013 = yongxia_penchui_kegongziyuan
        b014 = yongcheng_penchui_kegongziyuan
        b015 = changcun_penchui_kegongziyuan
        b01678 = gaoping_zhaozhuang_yangquan2_penchui_kegongziyuan

        b021 = datongpeiQ5800_fadian_kegongziyuan
        b022 = datongpeiQ5500_fadian_kegongziyuan
        b023 = datongpeiQ5200_fadian_kegongziyuan
        b024 = datongpeiQ5000_fadian_kegongziyuan
        b025 = shenfuyuan_fadian_kegongziyuan
        b026 = shenfupei_fadian_kegongziyuan

        b031 = jiaozuo_shaojie_kegongziyuan
        b032 = jincheng_shaojie_kegongziyuan



        b041 = gaizhilantan_penchui_kegongziyuan
        b042 = tizhijiaofen_penchui_kegongziyuan
        b043 = dingzhilantan_penchui_kegongziyuan
        b06 = shaojielantan_shaojie_kegongziyuan

        """
        到这里为止都是参数，没啥用，不看

        将所有的限制条件写出
    每一条为yi
    形式如下
    y1 = array([[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0]
                    ])
    yi和mi是一一对应的
    mi大部分都是0
    然后开始循环出所有组合
    循环第一个是包含所有yi的
    然后拼接出y和m带入函数得出是否有解
    如果有解，循环结束

    无解，则寻找下一个组合
    去除掉某个yi（除去y1以外，y1不管如何都是一定存在）的其他所有yi
    然后拼接y和m带入函数得出是否有解
    如果有解，循环结束，并输出第几个yi有问题
    如果无解，寻找下一组合

    所有去除1个yi循环结束后 
    开始去除两个yi循环（除去y1以外，y1不管如何都是一定存在）

    一直遍历到去除所有个yi结束
    得到哪些yi有问题 并输出

        """
        # 必要条件
        y0 = array([[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0]
                    ])

        # 可控资源
        y1 = array([[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
                    ])
        y2 = array([[0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
                    ])
        y3 = array([[0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
                    ])
        y4 = array([[0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
                    ])
        y5 = array([[0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
                    ])
        y6 = array([[0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
                    ])
        y7 = array([[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
                    ])
        y8 = array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
                    ])
        y9 = array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
                    ])
        y10 = array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
                     ])
        y11 = array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
                     ])
        y12 = array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
                     ])
        y13 = array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0]
                     ])
        y14 = array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0]
                     ])
        y15 = array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0]
                     ])
        y16 = array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0]
                     ])
        y17 = array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0]
                     ])
        y18 = array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]
                     ])
        # 品种比例
        y19 = array([[100 - p1_1_ratio_max, -p1_1_ratio_max, -p1_1_ratio_max, -p1_1_ratio_max,
                      -p1_1_ratio_max, -p1_1_ratio_max, -p1_1_ratio_max, -p1_1_ratio_max, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, -p1_1_ratio_max, -p1_1_ratio_max, -p1_1_ratio_max, 0, 0]
                     ])
        y20 = array([[p1_1_ratio_min - 100, p1_1_ratio_min, p1_1_ratio_min, p1_1_ratio_min,
                      p1_1_ratio_min, p1_1_ratio_min, p1_1_ratio_min, p1_1_ratio_min, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, p1_1_ratio_min, p1_1_ratio_min, p1_1_ratio_min, 0, 0]
                     ])
        y21 = array([[100 - p_1_ratio_max, -p_1_ratio_max, -p_1_ratio_max, -p_1_ratio_max,
                      -p_1_ratio_max, -p_1_ratio_max, -p_1_ratio_max, -p_1_ratio_max, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, -p_1_ratio_max, -p_1_ratio_max, -p_1_ratio_max, 0, 0]
                     ])
        y22 = array([[p_1_ratio_min - 100, p_1_ratio_min, p_1_ratio_min, p_1_ratio_min,
                      p_1_ratio_min, p_1_ratio_min, p_1_ratio_min, p_1_ratio_min, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, p_1_ratio_min, p_1_ratio_min, p_1_ratio_min, 0, 0]
                     ])
        y23 = array([[-p2_2_ratio_max, 100 - p2_2_ratio_max, -p2_2_ratio_max, -p2_2_ratio_max,
                      -p2_2_ratio_max, -p2_2_ratio_max, -p2_2_ratio_max, -p2_2_ratio_max, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, -p2_2_ratio_max, -p2_2_ratio_max, -p2_2_ratio_max, 0, 0]
                     ])
        y24 = array([[p2_2_ratio_min, p2_2_ratio_min - 100, p2_2_ratio_min, p2_2_ratio_min,
                      p2_2_ratio_min, p2_2_ratio_min, p2_2_ratio_min, p2_2_ratio_min, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, p2_2_ratio_min, p2_2_ratio_min, p2_2_ratio_min, 0, 0]
                     ])

        y25 = array([[-p3_2_ratio_max, -p3_2_ratio_max, 100 - p3_2_ratio_max, -p3_2_ratio_max,
                      -p3_2_ratio_max, -p3_2_ratio_max, -p3_2_ratio_max, -p3_2_ratio_max, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, -p3_2_ratio_max, -p3_2_ratio_max, -p3_2_ratio_max, 0, 0]
                     ])
        y26 = array([[p3_2_ratio_min, p3_2_ratio_min, p3_2_ratio_min - 100, p3_2_ratio_min,
                      p3_2_ratio_min, p3_2_ratio_min, p3_2_ratio_min, p3_2_ratio_min, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, p3_2_ratio_min, p3_2_ratio_min, p3_2_ratio_min, 0, 0]
                     ])
        y27 = array([[-p4_2_ratio_max, -p4_2_ratio_max, -p4_2_ratio_max, 100 - p4_2_ratio_max,
                      -p4_2_ratio_max, -p4_2_ratio_max, -p4_2_ratio_max, -p4_2_ratio_max, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, -p4_2_ratio_max, -p4_2_ratio_max, -p4_2_ratio_max, 0, 0]
                     ])
        y28 = array([[p4_2_ratio_min, p4_2_ratio_min, p4_2_ratio_min, p4_2_ratio_min - 100,
                      p4_2_ratio_min, p4_2_ratio_min, p4_2_ratio_min, p4_2_ratio_min, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, p4_2_ratio_min, p4_2_ratio_min, p4_2_ratio_min, 0, 0]
                     ])
        y29 = array([[-p5_2_ratio_max, -p5_2_ratio_max, -p5_2_ratio_max, -p5_2_ratio_max,
                      100 - p5_2_ratio_max, -p5_2_ratio_max, -p5_2_ratio_max, -p5_2_ratio_max, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, -p5_2_ratio_max, -p5_2_ratio_max, -p5_2_ratio_max, 0, 0]
                     ])
        y30 = array([[p5_2_ratio_min, p5_2_ratio_min, p5_2_ratio_min, p5_2_ratio_min,
                      p5_2_ratio_min - 100, p5_2_ratio_min, p5_2_ratio_min, p5_2_ratio_min, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, p5_2_ratio_min, p5_2_ratio_min, p5_2_ratio_min, 0, 0]
                     ])
        y31 = array([[-p6_2_ratio_max, -p6_2_ratio_max, -p6_2_ratio_max, -p6_2_ratio_max,
                      -p6_2_ratio_max, 100 - p6_2_ratio_max, -p6_2_ratio_max, -p6_2_ratio_max, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, -p6_2_ratio_max, -p6_2_ratio_max, -p6_2_ratio_max, 0, 0]
                     ])
        y32 = array([[p6_2_ratio_min, p6_2_ratio_min, p6_2_ratio_min, p6_2_ratio_min,
                      p6_2_ratio_min, p6_2_ratio_min - 100, p6_2_ratio_min, p6_2_ratio_min, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, p6_2_ratio_min, p6_2_ratio_min, p6_2_ratio_min, 0, 0]
                     ])
        y33 = array([[-p7_2_ratio_max, -p7_2_ratio_max, -p7_2_ratio_max, -p7_2_ratio_max,
                      -p7_2_ratio_max, -p7_2_ratio_max, 100 - p7_2_ratio_max, -p7_2_ratio_max, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, -p7_2_ratio_max, -p7_2_ratio_max, -p7_2_ratio_max, 0, 0]
                     ])
        y34 = array([[p7_2_ratio_min, p7_2_ratio_min, p7_2_ratio_min, p7_2_ratio_min,
                      p7_2_ratio_min, p7_2_ratio_min, p7_2_ratio_min - 100, p7_2_ratio_min, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, p7_2_ratio_min, p7_2_ratio_min, p7_2_ratio_min, 0, 0]
                     ])
        y35 = array([[-p8_2_ratio_max, -p8_2_ratio_max, -p8_2_ratio_max, -p8_2_ratio_max,
                      -p8_2_ratio_max, -p8_2_ratio_max, -p8_2_ratio_max, 100 - p8_2_ratio_max, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, -p8_2_ratio_max, -p8_2_ratio_max, -p8_2_ratio_max, 0, 0]
                     ])
        y36 = array([[p8_2_ratio_min, p8_2_ratio_min, p8_2_ratio_min, p8_2_ratio_min,
                      p8_2_ratio_min, p8_2_ratio_min, p8_2_ratio_min, p8_2_ratio_min - 100, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, p8_2_ratio_min, p8_2_ratio_min, p8_2_ratio_min, 0, 0]
                     ])
        y37 = array([[-p_2_ratio_max, 100 - p_2_ratio_max, 100 - p_2_ratio_max, 100 - p_2_ratio_max,
                      100 - p_2_ratio_max, 100 - p_2_ratio_max, 100 - p_2_ratio_max, 100 - p_2_ratio_max,
                      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -p_2_ratio_max, -p_2_ratio_max, -p_2_ratio_max, 0, 0]
                     ])
        y38 = array([[p_2_ratio_min, p_2_ratio_min - 100, p_2_ratio_min - 100, p_2_ratio_min - 100,
                      p_2_ratio_min - 100, p_2_ratio_min - 100, p_2_ratio_min - 100, p_2_ratio_min - 100,
                      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, p_2_ratio_min, p_2_ratio_min, p_2_ratio_min, 0, 0]
                     ])
        y39 = array([[-p9_3_ratio_max, -p9_3_ratio_max, -p9_3_ratio_max, -p9_3_ratio_max,
                      -p9_3_ratio_max, -p9_3_ratio_max, -p9_3_ratio_max, -p9_3_ratio_max, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, 100 - p9_3_ratio_max, -p9_3_ratio_max, -p9_3_ratio_max, 0, 0]
                     ])
        y40 = array([[p9_3_ratio_min, p9_3_ratio_min, p9_3_ratio_min, p9_3_ratio_min,
                      p9_3_ratio_min, p9_3_ratio_min, p9_3_ratio_min, p9_3_ratio_min, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, p9_3_ratio_min - 100, p9_3_ratio_min, p9_3_ratio_min, 0, 0]
                     ])
        y41 = array([[-p10_3_ratio_max, -p10_3_ratio_max, -p10_3_ratio_max, -p10_3_ratio_max,
                      -p10_3_ratio_max, -p10_3_ratio_max, -p10_3_ratio_max, -p10_3_ratio_max, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, -p10_3_ratio_max, 100 - p10_3_ratio_max, -p10_3_ratio_max, 0, 0]
                     ])
        y42 = array([[p10_3_ratio_min, p10_3_ratio_min, p10_3_ratio_min, p10_3_ratio_min,
                      p10_3_ratio_min, p10_3_ratio_min, p10_3_ratio_min, p10_3_ratio_min, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, p10_3_ratio_min, p10_3_ratio_min - 100, p10_3_ratio_min, 0, 0]
                     ])
        y43 = array([[-p11_3_ratio_max, -p11_3_ratio_max, -p11_3_ratio_max, -p11_3_ratio_max,
                      -p11_3_ratio_max, -p11_3_ratio_max, -p11_3_ratio_max, -p11_3_ratio_max, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, -p11_3_ratio_max, -p11_3_ratio_max, 100 - p11_3_ratio_max, 0, 0]
                     ])
        y44 = array([[p11_3_ratio_min, p11_3_ratio_min, p11_3_ratio_min, p11_3_ratio_min,
                      p11_3_ratio_min, p11_3_ratio_min, p11_3_ratio_min, p11_3_ratio_min, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, p11_3_ratio_min, p11_3_ratio_min, p11_3_ratio_min - 100, 0, 0]
                     ])
        y45 = array([[-p_3_ratio_max, -p_3_ratio_max, -p_3_ratio_max, -p_3_ratio_max,
                      -p_3_ratio_max, -p_3_ratio_max, -p_3_ratio_max, -p_3_ratio_max, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, 100 - p_3_ratio_max, 100 - p_3_ratio_max, 100 - p_3_ratio_max, 0, 0]
                     ])
        y46 = array([[p_3_ratio_min, p_3_ratio_min, p_3_ratio_min, p_3_ratio_min,
                      p_3_ratio_min, p_3_ratio_min, p_3_ratio_min, p_3_ratio_min, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, p_3_ratio_min - 100, p_3_ratio_min - 100, p_3_ratio_min - 100, 0, 0]
                     ])
        y47 = array([[0, 0, 0, 0, 0, 0, 0, 0,
                      100 - d1_1_ratio_max, -d1_1_ratio_max, -d1_1_ratio_max, -d1_1_ratio_max,
                      -d1_1_ratio_max, -d1_1_ratio_max, -d1_1_ratio_max, -d1_1_ratio_max,
                      0, 0, 0, 0, 0, -d1_1_ratio_max, 0]
                     ])
        y48 = array([[0, 0, 0, 0, 0, 0, 0, 0,
                      d1_1_ratio_min - 100, d1_1_ratio_min, d1_1_ratio_min, d1_1_ratio_min,
                      d1_1_ratio_min, d1_1_ratio_min, d1_1_ratio_min, d1_1_ratio_min,
                      0, 0, 0, 0, 0, d1_1_ratio_min, 0]
                     ])
        y49 = array([[0, 0, 0, 0, 0, 0, 0, 0,
                      -d2_1_ratio_max, 100 - d2_1_ratio_max, -d2_1_ratio_max, -d2_1_ratio_max,
                      -d2_1_ratio_max, -d2_1_ratio_max, -d2_1_ratio_max, -d2_1_ratio_max,
                      0, 0, 0, 0, 0, -d2_1_ratio_max, 0]
                     ])
        y50 = array([[0, 0, 0, 0, 0, 0, 0, 0,
                      d2_1_ratio_min, d2_1_ratio_min - 100, d2_1_ratio_min, d2_1_ratio_min,
                      d2_1_ratio_min, d2_1_ratio_min, d2_1_ratio_min, d2_1_ratio_min,
                      0, 0, 0, 0, 0, d2_1_ratio_min, 0]
                     ])
        y51 = array([[0, 0, 0, 0, 0, 0, 0, 0,
                      -d3_1_ratio_max, -d3_1_ratio_max, 100 - d3_1_ratio_max, -d3_1_ratio_max,
                      -d3_1_ratio_max, -d3_1_ratio_max, -d3_1_ratio_max, -d3_1_ratio_max,
                      0, 0, 0, 0, 0, -d3_1_ratio_max, 0]
                     ])
        y52 = array([[0, 0, 0, 0, 0, 0, 0, 0,
                      d3_1_ratio_min, d3_1_ratio_min, d3_1_ratio_min - 100, d3_1_ratio_min,
                      d3_1_ratio_min, d3_1_ratio_min, d3_1_ratio_min, d3_1_ratio_min,
                      0, 0, 0, 0, 0, d3_1_ratio_min, 0]
                     ])
        y53 = array([[0, 0, 0, 0, 0, 0, 0, 0,
                      -d4_1_ratio_max, -d4_1_ratio_max, -d4_1_ratio_max, 100 - d4_1_ratio_max,
                      -d4_1_ratio_max, -d4_1_ratio_max, -d4_1_ratio_max, -d4_1_ratio_max,
                      0, 0, 0, 0, 0, -d4_1_ratio_max, 0]
                     ])
        y54 = array([[0, 0, 0, 0, 0, 0, 0, 0,
                      d4_1_ratio_min, d4_1_ratio_min, d4_1_ratio_min, d4_1_ratio_min - 100,
                      d4_1_ratio_min, d4_1_ratio_min, d4_1_ratio_min, d4_1_ratio_min,
                      0, 0, 0, 0, 0, d4_1_ratio_min, 0]
                     ])
        y55 = array([[0, 0, 0, 0, 0, 0, 0, 0,
                      100 - d_1_ratio_max, 100 - d_1_ratio_max, 100 - d_1_ratio_max, 100 - d_1_ratio_max,
                      -d_1_ratio_max, -d_1_ratio_max, -d_1_ratio_max, -d_1_ratio_max,
                      0, 0, 0, 0, 0, -d_1_ratio_max, 0]
                     ])
        y56 = array([[0, 0, 0, 0, 0, 0, 0, 0,
                      d_1_ratio_min - 100, d_1_ratio_min - 100, d_1_ratio_min - 100, d_1_ratio_min - 100,
                      d_1_ratio_min, d_1_ratio_min, d_1_ratio_min, d_1_ratio_min,
                      0, 0, 0, 0, 0, d_1_ratio_min, 0]
                     ])
        y57 = array([[0, 0, 0, 0, 0, 0, 0, 0,
                      -d5_2_ratio_max, -d5_2_ratio_max, -d5_2_ratio_max, -d5_2_ratio_max,
                      100 - d5_2_ratio_max, -d5_2_ratio_max, -d5_2_ratio_max, -d5_2_ratio_max,
                      0, 0, 0, 0, 0, -d5_2_ratio_max, 0]
                     ])
        y58 = array([[0, 0, 0, 0, 0, 0, 0, 0,
                      d5_2_ratio_min, d5_2_ratio_min, d5_2_ratio_min, d5_2_ratio_min,
                      d5_2_ratio_min - 100, d5_2_ratio_min, d5_2_ratio_min, d5_2_ratio_min,
                      0, 0, 0, 0, 0, d5_2_ratio_min, 0]
                     ])
        y59 = array([[0, 0, 0, 0, 0, 0, 0, 0,
                      -d6_2_ratio_max, -d6_2_ratio_max, -d6_2_ratio_max, -d6_2_ratio_max,
                      -d6_2_ratio_max, 100 - d6_2_ratio_max, -d6_2_ratio_max, -d6_2_ratio_max,
                      0, 0, 0, 0, 0, -d6_2_ratio_max, 0]
                     ])
        y60 = array([[0, 0, 0, 0, 0, 0, 0, 0,
                      d6_2_ratio_min, d6_2_ratio_min, d6_2_ratio_min, d6_2_ratio_min,
                      d6_2_ratio_min, d6_2_ratio_min - 100, d6_2_ratio_min, d6_2_ratio_min,
                      0, 0, 0, 0, 0, d6_2_ratio_min, 0]
                     ])
        y61 = array([[0, 0, 0, 0, 0, 0, 0, 0,
                      -d7_2_ratio_max, -d7_2_ratio_max, -d7_2_ratio_max, -d7_2_ratio_max,
                      -d7_2_ratio_max, -d7_2_ratio_max, 100 - d7_2_ratio_max, -d7_2_ratio_max,
                      0, 0, 0, 0, 0, -d7_2_ratio_max, 0]
                     ])
        y62 = array([[0, 0, 0, 0, 0, 0, 0, 0,
                      d7_2_ratio_min, d7_2_ratio_min, d7_2_ratio_min, d7_2_ratio_min,
                      d7_2_ratio_min, d7_2_ratio_min, d7_2_ratio_min - 100, d7_2_ratio_min,
                      0, 0, 0, 0, 0, d7_2_ratio_min, 0]
                     ])
        y63 = array([[0, 0, 0, 0, 0, 0, 0, 0,
                      -d8_2_ratio_max, -d8_2_ratio_max, -d8_2_ratio_max, -d8_2_ratio_max,
                      -d8_2_ratio_max, -d8_2_ratio_max, -d8_2_ratio_max, 100 - d8_2_ratio_max,
                      0, 0, 0, 0, 0, -d8_2_ratio_max, 0]
                     ])
        y64 = array([[0, 0, 0, 0, 0, 0, 0, 0,
                      d8_2_ratio_min, d8_2_ratio_min, d8_2_ratio_min, d8_2_ratio_min,
                      d8_2_ratio_min, d8_2_ratio_min, d8_2_ratio_min, d8_2_ratio_min - 100,
                      0, 0, 0, 0, 0, d8_2_ratio_min, 0]
                     ])
        y65 = array([[0, 0, 0, 0, 0, 0, 0, 0,
                      -d_2_ratio_max, -d_2_ratio_max, -d_2_ratio_max, -d_2_ratio_max,
                      100 - d_2_ratio_max, 100 - d_2_ratio_max, 100 - d_2_ratio_max, 100 - d_2_ratio_max,
                      0, 0, 0, 0, 0, -d_2_ratio_max, 0]
                     ])
        y66 = array([[0, 0, 0, 0, 0, 0, 0, 0,
                      d_2_ratio_min, d_2_ratio_min, d_2_ratio_min, d_2_ratio_min,
                      d_2_ratio_min - 100, d_2_ratio_min - 100, d_2_ratio_min - 100, d_2_ratio_min - 100,
                      0, 0, 0, 0, 0, d_2_ratio_min, 0]
                     ])
        y67 = array([[0, 0, 0, 0, 0, 0, 0, 0,
                      -d9_3_ratio_max, -d9_3_ratio_max, -d9_3_ratio_max, -d9_3_ratio_max,
                      -d9_3_ratio_max, -d9_3_ratio_max, -d9_3_ratio_max, -d9_3_ratio_max,
                      0, 0, 0, 0, 0, 100 - d9_3_ratio_max, 0]
                     ])
        y68 = array([[0, 0, 0, 0, 0, 0, 0, 0,
                      d9_3_ratio_min, d9_3_ratio_min, d9_3_ratio_min, d9_3_ratio_min,
                      d9_3_ratio_min, d9_3_ratio_min, d9_3_ratio_min, d9_3_ratio_min,
                      0, 0, 0, 0, 0, d9_3_ratio_min - 100, 0]
                     ])
        y69 = array([[0, 0, 0, 0, 0, 0, 0, 0,
                      -d_3_ratio_max, -d_3_ratio_max, -d_3_ratio_max, -d_3_ratio_max,
                      -d_3_ratio_max, -d_3_ratio_max, -d_3_ratio_max, -d_3_ratio_max,
                      0, 0, 0, 0, 0, 100 - d_3_ratio_max, 0]
                     ])
        y70 = array([[0, 0, 0, 0, 0, 0, 0, 0,
                      d_3_ratio_min, d_3_ratio_min, d_3_ratio_min, d_3_ratio_min,
                      d_3_ratio_min, d_3_ratio_min, d_3_ratio_min, d_3_ratio_min,
                      0, 0, 0, 0, 0, d_3_ratio_min - 100, 0]
                     ])
        y71 = array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                      100 - s1_1_ratio_max, -s1_1_ratio_max,
                      0, 0, 0, 0, -s1_1_ratio_max]
                     ])
        y72 = array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                      s1_1_ratio_min - 100, s1_1_ratio_min,
                      0, 0, 0, 0, s1_1_ratio_min]
                     ])
        y73 = array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                      -s2_1_ratio_max, 100 - s2_1_ratio_max,
                      0, 0, 0, 0, -s2_1_ratio_max]
                     ])
        y74 = array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                      s2_1_ratio_min, s2_1_ratio_min - 100,
                      0, 0, 0, 0, s2_1_ratio_min]
                     ])
        y75 = array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                      100 - s_1_ratio_max, 100 - s_1_ratio_max,
                      0, 0, 0, 0, -s_1_ratio_max]
                     ])
        y76 = array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                      s_1_ratio_min - 100, s_1_ratio_min - 100,
                      0, 0, 0, 0, s_1_ratio_min]
                     ])
        y77 = array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                      -s3_2_ratio_max, -s3_2_ratio_max,
                      0, 0, 0, 0, 100 - s3_2_ratio_max]
                     ])
        y78 = array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                      s3_2_ratio_min, s3_2_ratio_min,
                      0, 0, 0, 0, s3_2_ratio_min - 100]
                     ])
        y79 = array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                      -s_2_ratio_max, -s_2_ratio_max,
                      0, 0, 0, 0, 100 - s_2_ratio_max]
                     ])
        y80 = array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                      s_2_ratio_min, s_2_ratio_min,
                      0, 0, 0, 0, s_2_ratio_min - 100]
                     ])
        # 煤质
        y81 = array([[pm1_shui - p_shui_max, pm2_shui - p_shui_max, pm3_shui - p_shui_max, pm4_shui - p_shui_max,
                      pm5_shui - p_shui_max, pm6_shui - p_shui_max, pm7_shui - p_shui_max, pm8_shui - p_shui_max, 0, 0, 0,
                      0, 0, 0, 0, 0, 0, 0, pl1_shui - p_shui_max, pl2_shui - p_shui_max, pl3_shui - p_shui_max, 0, 0]
                     ])
        y82 = array([[p_shui_min - pm1_shui, p_shui_min - pm2_shui, p_shui_min - pm3_shui, p_shui_min - pm4_shui,
                      p_shui_min - pm5_shui, p_shui_min - pm6_shui, p_shui_min - pm7_shui, p_shui_min - pm8_shui, 0, 0, 0,
                      0, 0, 0, 0, 0, 0, 0, p_shui_min - pl1_shui, p_shui_min - pl2_shui, p_shui_min - pl3_shui, 0, 0]
                     ])
        y83 = array([[pm1_hui - p_hui_max, pm2_hui - p_hui_max, pm3_hui - p_hui_max, pm4_hui - p_hui_max,
                      pm5_hui - p_hui_max, pm6_hui - p_hui_max, pm7_hui - p_hui_max, pm8_hui - p_hui_max, 0, 0, 0, 0,
                      0, 0, 0, 0, 0, 0, pl1_hui - p_hui_max, pl2_hui - p_hui_max, pl3_hui - p_hui_max, 0, 0]
                     ])
        y84 = array([[p_hui_min - pm1_hui, p_hui_min - pm2_hui, p_hui_min - pm3_hui, p_hui_min - pm4_hui,
                      p_hui_min - pm5_hui, p_hui_min - pm6_hui, p_hui_min - pm7_hui, p_hui_min - pm8_hui, 0, 0, 0, 0,
                      0, 0, 0, 0, 0, 0, p_hui_min - pl1_hui, p_hui_min - pl2_hui, p_hui_min - pl3_hui, 0, 0]
                     ])
        y85 = array([[pm1_huifa - p_huifa_max, pm2_huifa - p_huifa_max, pm3_huifa - p_huifa_max, pm4_huifa - p_huifa_max,
                      pm5_huifa - p_huifa_max, pm6_huifa - p_huifa_max, pm7_huifa - p_huifa_max, pm8_huifa - p_huifa_max, 0,
                      0, 0, 0,
                      0, 0, 0, 0, 0, 0, pl1_huifa - p_huifa_max, pl2_huifa - p_huifa_max, pl3_huifa - p_huifa_max, 0, 0]
                     ])
        y86 = array([[p_huifa_min - pm1_huifa, p_huifa_min - pm2_huifa, p_huifa_min - pm3_huifa, p_huifa_min - pm4_huifa,
                      p_huifa_min - pm5_huifa, p_huifa_min - pm6_huifa, p_huifa_min - pm7_huifa, p_huifa_min - pm8_huifa, 0,
                      0, 0, 0,
                      0, 0, 0, 0, 0, 0, p_huifa_min - pl1_huifa, p_huifa_min - pl2_huifa, p_huifa_min - pl3_huifa, 0, 0]
                     ])
        y87 = array([[pm1_liu - p_liu_max, pm2_liu - p_liu_max, pm3_liu - p_liu_max, pm4_liu - p_liu_max,
                      pm5_liu - p_liu_max, pm6_liu - p_liu_max, pm7_liu - p_liu_max, pm8_liu - p_liu_max, 0, 0, 0, 0,
                      0, 0, 0, 0, 0, 0, pl1_liu - p_liu_max, pl2_liu - p_liu_max, pl3_liu - p_liu_max, 0, 0]
                     ])
        y88 = array([[p_liu_min - pm1_liu, p_liu_min - pm2_liu, p_liu_min - pm3_liu, p_liu_min - pm4_liu,
                      p_liu_min - pm5_liu, p_liu_min - pm6_liu, p_liu_min - pm7_liu, p_liu_min - pm8_liu, 0, 0, 0, 0,
                      0, 0, 0, 0, 0, 0, p_liu_min - pl1_liu, p_liu_min - pl2_liu, p_liu_min - pl3_liu, 0, 0]
                     ])
        y89 = array([[pm1_gu - p_gu_max, pm2_gu - p_gu_max, pm3_gu - p_gu_max, pm4_gu - p_gu_max,
                      pm5_gu - p_gu_max, pm6_gu - p_gu_max, pm7_gu - p_gu_max, pm8_gu - p_gu_max, 0, 0, 0, 0,
                      0, 0, 0, 0, 0, 0, pl1_gu - p_gu_max, pl2_gu - p_gu_max, pl3_gu - p_gu_max, 0, 0]
                     ])
        y90 = array([[p_gu_min - pm1_gu, p_gu_min - pm2_gu, p_gu_min - pm3_gu, p_gu_min - pm4_gu,
                      p_gu_min - pm5_gu, p_gu_min - pm6_gu, p_gu_min - pm7_gu, p_gu_min - pm8_gu, 0, 0, 0, 0,
                      0, 0, 0, 0, 0, 0, p_gu_min - pl1_gu, p_gu_min - pl2_gu, p_gu_min - pl3_gu, 0, 0]
                     ])
        y91 = array([[pm1_mo - p_mo_max, pm2_mo - p_mo_max, pm3_mo - p_mo_max, pm4_mo - p_mo_max,
                      pm5_mo - p_mo_max, pm6_mo - p_mo_max, pm7_mo - p_mo_max, pm8_mo - p_mo_max, 0, 0, 0, 0,
                      0, 0, 0, 0, 0, 0, pl1_mo - p_mo_max, pl2_mo - p_mo_max, pl3_mo - p_mo_max, 0, 0]
                     ])
        y92 = array([[p_mo_min - pm1_mo, p_mo_min - pm2_mo, p_mo_min - pm3_mo, p_mo_min - pm4_mo,
                      p_mo_min - pm5_mo, p_mo_min - pm6_mo, p_mo_min - pm7_mo, p_mo_min - pm8_mo, 0, 0, 0, 0,
                      0, 0, 0, 0, 0, 0, p_mo_min - pl1_mo, p_mo_min - pl2_mo, p_mo_min - pl3_mo, 0, 0]
                     ])
        y93 = array([[pm1_re - p_re_max, pm2_re - p_re_max, pm3_re - p_re_max, pm4_re - p_re_max,
                      pm5_re - p_re_max, pm6_re - p_re_max, pm7_re - p_re_max, pm8_re - p_re_max, 0, 0, 0, 0,
                      0, 0, 0, 0, 0, 0, pl1_re - p_re_max, pl2_re - p_re_max, pl3_re - p_re_max, 0, 0]
                     ])
        y94 = array([[p_re_min - pm1_re, p_re_min - pm2_re, p_re_min - pm3_re, p_re_min - pm4_re,
                      p_re_min - pm5_re, p_re_min - pm6_re, p_re_min - pm7_re, p_re_min - pm8_re, 0, 0, 0, 0,
                      0, 0, 0, 0, 0, 0, p_re_min - pl1_re, p_re_min - pl2_re, p_re_min - pl3_re, 0, 0]
                     ])
        y95 = array([[pm1_c - p_c_max, pm2_c - p_c_max, pm3_c - p_c_max, pm4_c - p_c_max,
                      pm5_c - p_c_max, pm6_c - p_c_max, pm7_c - p_c_max, pm8_c - p_c_max, 0, 0, 0, 0,
                      0, 0, 0, 0, 0, 0, pl1_c - p_c_max, pl2_c - p_c_max, pl3_c - p_c_max, 0, 0]
                     ])
        y96 = array([[p_c_min - pm1_c, p_c_min - pm2_c, p_c_min - pm3_c, p_c_min - pm4_c,
                      p_c_min - pm5_c, p_c_min - pm6_c, p_c_min - pm7_c, p_c_min - pm8_c, 0, 0, 0, 0,
                      0, 0, 0, 0, 0, 0, p_c_min - pl1_c, p_c_min - pl2_c, p_c_min - pl3_c, 0, 0]
                     ])
        y97 = array([[0, 0, 0, 0, 0, 0, 0, 0,
                      dm1_shui - d_shui_max, dm2_shui - d_shui_max, dm3_shui - d_shui_max, dm4_shui - d_shui_max,
                      dm5_shui - d_shui_max, dm6_shui - d_shui_max, 0, 0, 0, 0, 0, 0, 0, dl1_shui - d_shui_max, 0]
                     ])
        y98 = array([[0, 0, 0, 0, 0, 0, 0, 0,
                      d_shui_min - dm1_shui, d_shui_min - dm2_shui, d_shui_min - dm3_shui, d_shui_min - dm4_shui,
                      d_shui_min - dm5_shui, d_shui_min - dm6_shui, 0, 0, 0, 0, 0, 0, 0, d_shui_min - dl1_shui, 0]
                     ])
        y99 = array([[0, 0, 0, 0, 0, 0, 0, 0,
                      dm1_hui - d_hui_max, dm2_hui - d_hui_max, dm3_hui - d_hui_max, dm4_hui - d_hui_max,
                      dm5_hui - d_hui_max, dm6_hui - d_hui_max, 0, 0, 0, 0, 0, 0, 0, dl1_hui - d_hui_max, 0]
                     ])
        y100 = array([[0, 0, 0, 0, 0, 0, 0, 0,
                       d_hui_min - dm1_hui, d_hui_min - dm2_hui, d_hui_min - dm3_hui, d_hui_min - dm4_hui,
                       d_hui_min - dm5_hui, d_hui_min - dm6_hui, 0, 0, 0, 0, 0, 0, 0, d_hui_min - dl1_hui, 0]
                      ])
        y101 = array([[0, 0, 0, 0, 0, 0, 0, 0,
                       dm1_huifa - d_huifa_max, dm2_huifa - d_huifa_max, dm3_huifa - d_huifa_max, dm4_huifa - d_huifa_max,
                       dm5_huifa - d_huifa_max, dm6_huifa - d_huifa_max, 0, 0, 0, 0, 0, 0, 0, dl1_huifa - d_huifa_max, 0]
                      ])
        y102 = array([[0, 0, 0, 0, 0, 0, 0, 0,
                       d_huifa_min - dm1_huifa, d_huifa_min - dm2_huifa, d_huifa_min - dm3_huifa, d_huifa_min - dm4_huifa,
                       d_huifa_min - dm5_huifa, d_huifa_min - dm6_huifa, 0, 0, 0, 0, 0, 0, 0, d_huifa_min - dl1_huifa, 0]
                      ])
        y103 = array([[0, 0, 0, 0, 0, 0, 0, 0,
                       dm1_liu - d_liu_max, dm2_liu - d_liu_max, dm3_liu - d_liu_max, dm4_liu - d_liu_max,
                       dm5_liu - d_liu_max, dm6_liu - d_liu_max, 0, 0, 0, 0, 0, 0, 0, dl1_liu - d_liu_max, 0]
                      ])
        y104 = array([[0, 0, 0, 0, 0, 0, 0, 0,
                       d_liu_min - dm1_liu, d_liu_min - dm2_liu, d_liu_min - dm3_liu, d_liu_min - dm4_liu,
                       d_liu_min - dm5_liu, d_liu_min - dm6_liu, 0, 0, 0, 0, 0, 0, 0, d_liu_min - dl1_liu, 0]
                      ])
        y105 = array([[0, 0, 0, 0, 0, 0, 0, 0,
                       dm1_gu - d_gu_max, dm2_gu - d_gu_max, dm3_gu - d_gu_max, dm4_gu - d_gu_max,
                       dm5_gu - d_gu_max, dm6_gu - d_gu_max, 0, 0, 0, 0, 0, 0, 0, dl1_gu - d_gu_max, 0]
                      ])
        y106 = array([[0, 0, 0, 0, 0, 0, 0, 0,
                       d_gu_min - dm1_gu, d_gu_min - dm2_gu, d_gu_min - dm3_gu, d_gu_min - dm4_gu,
                       d_gu_min - dm5_gu, d_gu_min - dm6_gu, 0, 0, 0, 0, 0, 0, 0, d_gu_min - dl1_gu, 0]
                      ])
        y107 = array([[0, 0, 0, 0, 0, 0, 0, 0,
                       dm1_re - d_re_max, dm2_re - d_re_max, dm3_re - d_re_max, dm4_re - d_re_max,
                       dm5_re - d_re_max, dm6_re - d_re_max, dm7_re - d_re_max, dm8_re - d_re_max, 0, 0, 0, 0, 0,
                       dl1_re - d_re_max, 0]
                      ])
        y108 = array([[0, 0, 0, 0, 0, 0, 0, 0,
                       d_re_min - dm1_re, d_re_min - dm2_re, d_re_min - dm3_re, d_re_min - dm4_re,
                       d_re_min - dm5_re, d_re_min - dm6_re, d_re_min - dm7_re, d_re_min - dm8_re, 0, 0, 0, 0, 0,
                       d_re_min - dl1_re, 0]
                      ])
        y109 = array([[0, 0, 0, 0, 0, 0, 0, 0,
                       dm1_c - d_c_max, dm2_c - d_c_max, dm3_c - d_c_max, dm4_c - d_c_max,
                       dm5_c - d_c_max, dm6_c - d_c_max, 0, 0, 0, 0, 0, 0, 0, dl1_c - d_c_max, 0]
                      ])
        y110 = array([[0, 0, 0, 0, 0, 0, 0, 0,
                       d_c_min - dm1_c, d_c_min - dm2_c, d_c_min - dm3_c, d_c_min - dm4_c,
                       d_c_min - dm5_c, d_c_min - dm6_c, 0, 0, 0, 0, 0, 0, 0, d_c_min - dl1_c, 0]
                      ])
        y111 = array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                       sm1_shui - s_shui_max, sm2_shui - s_shui_max, 0, 0, 0, 0, sl1_shui - s_shui_max]
                      ])
        y112 = array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                       s_shui_min - sm1_shui, s_shui_min - sm2_shui, 0, 0, 0, 0, s_shui_min - sl1_shui]
                      ])
        y113 = array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                       sm1_hui - s_hui_max, sm2_hui - s_hui_max, 0, 0, 0, 0, sl1_hui - s_hui_max]
                      ])
        y114 = array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                       s_hui_min - sm1_hui, s_hui_min - sm2_hui, 0, 0, 0, 0, s_hui_min - sl1_hui]
                      ])
        y115 = array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                       sm1_huifa - s_huifa_max, sm2_huifa - s_huifa_max, 0, 0, 0, 0, sl1_huifa - s_huifa_max]
                      ])
        y116 = array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                       s_huifa_min - sm1_huifa, s_huifa_min - sm2_huifa, 0, 0, 0, 0, s_huifa_min - sl1_huifa]
                      ])
        y117 = array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                       sm1_liu - s_liu_max, sm2_liu - s_liu_max, 0, 0, 0, 0, sl1_liu - s_liu_max]
                      ])
        y118 = array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                       s_liu_min - sm1_liu, s_liu_min - sm2_liu, 0, 0, 0, 0, s_liu_min - sl1_liu]
                      ])
        y119 = array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                       sm1_gu - s_gu_max, sm2_gu - s_gu_max, 0, 0, 0, 0, sl1_gu - s_gu_max]
                      ])
        y120 = array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                       s_gu_min - sm1_gu, s_gu_min - sm2_gu, 0, 0, 0, 0, s_gu_min - sl1_gu]
                      ])
        y121 = array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                       sm1_mo - s_mo_max, sm2_mo - s_mo_max, 0, 0, 0, 0, sl1_mo - s_mo_max]
                      ])
        y122 = array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                       s_mo_min - sm1_mo, s_mo_min - sm2_mo, 0, 0, 0, 0, s_mo_min - sl1_mo]
                      ])
        y123 = array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                       sm1_re - s_re_max, sm2_re - s_re_max, 0, 0, 0, 0, sl1_re - s_re_max]
                      ])
        y124 = array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                       s_re_min - sm1_re, s_re_min - sm2_re, 0, 0, 0, 0, s_re_min - sl1_re]
                      ])
        y125 = array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                       sm1_c - s_c_max, sm2_c - s_c_max, 0, 0, 0, 0, sl1_c - s_c_max]
                      ])
        y126 = array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                       s_c_min - sm1_c, s_c_min - sm2_c, 0, 0, 0, 0, s_c_min - sl1_c]
                      ])

        yyy = (
        y0, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, y11, y12, y13, y14, y15, y16, y17, y18, y19, y20, y21, y22, y23, y24,
        y25, y26, y27, y28, y29, y30, y31, y32, y33, y34, y35, y36, y37, y38, y39, y40, y41, y42, y43, y44, y45, y46, y47,
        y48, y49, y50, y51, y52, y53, y54, y55, y56, y57, y58, y59, y60, y61, y62, y63, y64, y65, y66, y67, y68, y69, y70,
        y71, y72, y73, y74, y75, y76, y77, y78, y79, y80, y81, y82, y83, y84, y85, y86, y87, y88, y89, y90, y91, y92, y93,
        y94, y95, y96, y97, y98, y99, y100, y101, y102, y103, y104, y105, y106, y107, y108, y109, y110, y111, y112, y113,
        y114, y115, y116, y117, y118, y119, y120, y121, y122, y123, y124, y125, y126)
        Y = np.concatenate(yyy, axis=0)
        # 好像是去掉array第0行第1行的函数
        # y = np.delete(y, [0, 6], axis=0)
        # 好像是拼接array的函数
        # y = np.concatenate((y1, y2), axis=0)
        # print(Y)

        m0 = array([b0])

        m1 = array([b011])
        m2 = array([b012])
        m3 = array([b013])
        m4 = array([b014])
        m5 = array([b015])
        m6 = array([b01678])
        m7 = array([b021])
        m8 = array([b022])
        m9 = array([b023])
        m10 = array([b024])
        m11 = array([b025])
        m12 = array([b026])
        m13 = array([b031])
        m14 = array([b032])
        m15 = array([b041])
        m16 = array([b042])
        m17 = array([b043])
        m18 = array([b06])
        m19 = array([0])
        m20 = array([0])
        m21 = array([0])
        m22 = array([0])
        m23 = array([0])
        m24 = array([0])
        m25 = array([0])
        m26 = array([0])
        m27 = array([0])
        m28 = array([0])
        m29 = array([0])
        m30 = array([0])
        m31 = array([0])
        m32 = array([0])
        m33 = array([0])
        m34 = array([0])
        m35 = array([0])
        m36 = array([0])
        m37 = array([0])
        m38 = array([0])
        m39 = array([0])
        m40 = array([0])
        m41 = array([0])
        m42 = array([0])
        m43 = array([0])
        m44 = array([0])
        m45 = array([0])
        m46 = array([0])
        m47 = array([0])
        m48 = array([0])
        m49 = array([0])
        m50 = array([0])
        m51 = array([0])
        m52 = array([0])
        m53 = array([0])
        m54 = array([0])
        m55 = array([0])
        m56 = array([0])
        m57 = array([0])
        m58 = array([0])
        m59 = array([0])
        m60 = array([0])
        m61 = array([0])
        m62 = array([0])
        m63 = array([0])
        m64 = array([0])
        m65 = array([0])
        m66 = array([0])
        m67 = array([0])
        m68 = array([0])
        m69 = array([0])
        m70 = array([0])
        m71 = array([0])
        m72 = array([0])
        m73 = array([0])
        m74 = array([0])
        m75 = array([0])
        m76 = array([0])
        m77 = array([0])
        m78 = array([0])
        m79 = array([0])
        m80 = array([0])
        m81 = array([0])
        m82 = array([0])
        m83 = array([0])
        m84 = array([0])
        m85 = array([0])
        m86 = array([0])
        m87 = array([0])
        m88 = array([0])
        m89 = array([0])
        m90 = array([0])
        m91 = array([0])
        m92 = array([0])
        m93 = array([0])
        m94 = array([0])
        m95 = array([0])
        m96 = array([0])
        m97 = array([0])
        m98 = array([0])
        m99 = array([0])
        m100 = array([0])
        m101 = array([0])
        m102 = array([0])
        m103 = array([0])
        m104 = array([0])
        m105 = array([0])
        m106 = array([0])
        m107 = array([0])
        m108 = array([0])
        m109 = array([0])
        m110 = array([0])
        m111 = array([0])
        m112 = array([0])
        m113 = array([0])
        m114 = array([0])
        m115 = array([0])
        m116 = array([0])
        m117 = array([0])
        m118 = array([0])
        m119 = array([0])
        m120 = array([0])
        m121 = array([0])
        m122 = array([0])
        m123 = array([0])
        m124 = array([0])
        m125 = array([0])
        m126 = array([0])

        mmm = (
        m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m16, m17, m18, m19, m20, m21, m22, m23, m24,
        m25, m26, m27, m28, m29, m30, m31, m32, m33, m34, m35, m36, m37, m38, m39, m40, m41, m42, m43, m44, m45, m46, m47,
        m48, m49, m50, m51, m52, m53, m54, m55, m56, m57, m58, m59, m60, m61, m62, m63, m64, m65, m66, m67, m68, m69, m70,
        m71, m72, m73, m74, m75, m76, m77, m78, m79, m80, m81, m82, m83, m84, m85, m86, m87, m88, m89, m90, m91, m92, m93,
        m94, m95, m96, m97, m98, m99, m100, m101, m102, m103, m104, m105, m106, m107, m108, m109, m110, m111, m112, m113,
        m114, m115, m116, m117, m118, m119, m120, m121, m122, m123, m124, m125, m126)

        M = np.concatenate(mmm, axis=0)
        # print(M)
        # m = np.delete(m, [0, 7], 0)
        # #对所有限制条件一起
        # y = np.concatenate((y1, y2, y3, y4), axis=0)
        # y = np.concatenate((y1, y2, y3), axis=0)
        # 配置一个df来展示出对应的参数名称
        data = {
            '编号': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
                   29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
                   55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
                   81, 82, 83, 84, 85,
                   86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
                   110,
                   111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126],
            '参数名': ['控煤指标', '喷吹煤-神府-可供资源', '喷吹煤-俄罗斯-可供资源', '喷吹煤-永夏-可供资源', '喷吹煤-永城-可供资源', '喷吹煤-常村-可供资源', '喷吹煤-高平赵庄阳泉2#-可供资源'
                , '发电煤-大同配Q5800-可供资源', '发电煤-大同配Q5500-可供资源', '发电煤-大同配Q5200-可供资源', '发电煤-大同配Q5000-可供资源', '发电煤-神府原-可供资源',
                    '发电煤-神府配-可供资源'
                , '烧结煤-焦作-可供资源', '烧结煤-晋城-可供资源'
                , '喷吹煤-改质兰炭-可供资源', '喷吹煤-提质焦粉-可供资源', '喷吹煤-定制兰炭-可供资源', '烧结煤-烧结兰炭-可供资源'
                , '喷吹煤-神府-比例上限', '喷吹煤-神府-比例下限', '喷吹煤-烟煤-比例上限', '喷吹煤-烟煤-比例下限'
                , '喷吹煤-俄罗斯-比例上限', '喷吹煤-俄罗斯-比例下限', '喷吹煤-永夏-比例上限', '喷吹煤-永夏-比例下限', '喷吹煤-永城-比例上限', '喷吹煤-永城-比例下限', '喷吹煤-常村-比例上限',
                    '喷吹煤-常村-比例下限'
                , '喷吹煤-高平-比例上限', '喷吹煤-高平-比例下限', '喷吹煤-赵庄-比例上限', '喷吹煤-赵庄-比例下限', '喷吹煤-阳泉2#-比例上限', '喷吹煤-阳泉2#-比例下限',
                    '喷吹煤-无烟煤-比例上限', '喷吹煤-无烟煤-比例下限'
                , '喷吹煤-改质兰炭-比例上限', '喷吹煤-改质兰炭-比例下限', '喷吹煤-提质焦粉-比例上限', '喷吹煤-提质焦粉-比例下限', '喷吹煤-定制兰炭-比例上限', '喷吹煤-定制兰炭-比例下限',
                    '喷吹煤-兰炭-比例上限', '喷吹煤-兰炭-比例下限'
                , '发电煤-大同配Q5800-比例上限', '发电煤-大同配Q5800-比例下限', '发电煤-大同配Q5500-比例上限', '发电煤-大同配Q5500-比例下限', '发电煤-大同配Q5200-比例上限',
                    '发电煤-大同配Q5200-比例下限', '发电煤-大同配Q5000-比例上限', '发电煤-大同配Q5000-比例下限'
                , '发电煤-大同类-比例上限', '发电煤-大同类-比例下限', '发电煤-神府原-比例上限', '发电煤-神府原-比例下限', '发电煤-神府配-比例上限', '发电煤-神府配-比例下限',
                    '发电煤-神优2-比例上限', '发电煤-神优2-比例下限'
                , '发电煤-神外3-比例上限', '发电煤-神外3-比例下限', '发电煤-神府类-比例上限', '发电煤-神府类-比例下限', '发电煤-电厂兰炭-比例上限', '发电煤-电厂兰炭-比例下限',
                    '发电煤-兰炭类-比例上限', '发电煤-兰炭类-比例下限'
                , '烧结煤-焦作-比例上限', '烧结煤-焦作-比例下限', '烧结煤-晋城-比例上限', '烧结煤-晋城-比例下限', '烧结煤-无烟煤-比例上限', '烧结煤-无烟煤-比例下限',
                    '烧结煤-烧结兰炭-比例上限', '烧结煤-烧结兰炭-比例下限', '烧结煤-兰炭-比例上限', '烧结煤-兰炭-比例下限'
                , '喷吹煤-水分—上限', '喷吹煤-水分—下限', '喷吹煤-灰分—上限', '喷吹煤-灰分—下限', '喷吹煤-挥发分—上限', '喷吹煤-挥发分—下限', '喷吹煤-硫分—上限', '喷吹煤-硫分—下限',
                    '喷吹煤-固定碳—上限', '喷吹煤-固定碳—下限'
                , '喷吹煤-可磨性—上限', '喷吹煤-可磨性—下限', '喷吹煤-热值—上限', '喷吹煤-热值—下限', '喷吹煤-C—上限', '喷吹煤-C—下限'
                , '发电煤-水分—上限', '发电煤-水分—下限', '发电煤-灰分—上限', '发电煤-灰分—下限', '发电煤-挥发分—上限', '发电煤-挥发分—下限', '发电煤-硫分—上限', '发电煤-硫分—下限',
                    '发电煤-固定碳—上限', '发电煤-固定碳—下限'
                , '发电煤-热值—上限', '发电煤-热值—下限', '发电煤-C—上限', '发电煤-C—下限'
                , '烧结煤-水分—上限', '烧结煤-水分—下限', '烧结煤-灰分—上限', '烧结煤-灰分—下限', '烧结煤-挥发分—上限', '烧结煤-挥发分—下限', '烧结煤-硫分—上限', '烧结煤-硫分—下限',
                    '烧结煤-固定碳—上限', '烧结煤-固定碳—下限'
                , '烧结煤-可磨性—上限', '烧结煤-可磨性—下限', '烧结煤-热值—上限', '烧结煤-热值—下限', '烧结煤-C—上限', '烧结煤-C—下限'
                    ]
        }

        df_canshu = pd.DataFrame(data=data)
        print(df_canshu)

        success = 0

        def judge_solution_exist(e1, f1):
            """
            传入e1，f1进行线性规划求解，判断是否有可行域
            """
            c = array(
                [c11, c12, c13, c14, c15, c16, c17, c18, c21, c22, c23, c24, c25, c26, c27, c28, c31, c32, c41, c42, c43,
                 cc5,
                 cc6])
            e2 = array([[a11, a11, a11, a11, a11, a11, a11, a11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, a12, a12, a12, 0, 0],
                        [0, 0, 0, 0, 0, 0, 0, 0, a21, a21, a21, a21, a21, a21, a21, a21, 0, 0, 0, 0, 0, a22, 0],
                        [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, a31, a31, 0, 0, 0, 0, a32]])  # 定义等式约束矩阵
            f2 = array([b1, b2, b3])
            x = cp.Variable(23)
            obj = cp.Minimize(c @ x)
            cons = [e1 @ x <= f1, e2 @ x == f2, x >= 0]
            prob = cp.Problem(obj, cons)
            prob.solve(solver='GLPK_MI', verbose=True)
            print("最优初始值为:", prob.value)
            print("最优初始解为：\n", x.value)
            if x.value is None:
                success = 0
            else:
                success = 1
            print(success)
            return success

        s = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
             30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
             58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
             86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
             111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]
        # df2 = df_canshu
        # end = 0
        success = judge_solution_exist(e1=Y, f1=M)





        # if success == 1:
        #     print('存在最优解')
        # else:
        #     print('无解，开始循环找需要修改的约束条件')
        #     for i in range(1, 126):
        #         lista = list(itertools.combinations(s, i))
        #         print(i)
        #         # print(lista)
        #         if end == 1:
        #             break
        #         for tmp in lista:
        #             # print(tmp)
        #             if i == 1:
        #                 t = tmp[0]
        #                 # print(t)
        #                 y = np.delete(Y, t, axis=0)
        #                 m = np.delete(M, t, 0)
        #                 success = judge_solution_exist(e1=y, f1=m)
        #                 if success == 1:
        #                     print('end')
        #                     # print(t)
        #                     df2 = df_canshu.iloc[[t]]
        #                     end = 1
        #                     break
        #
        #                 else:
        #                     continue
        #             else:
        #                 b = list(tmp)
        #                 # print(b)
        #                 y = np.delete(Y, b, axis=0)
        #                 m = np.delete(M, b, 0)
        #                 success = judge_solution_exist(e1=y, f1=m)
        #                 if success == 1:
        #                     print('end')
        #                     # print(tmp)
        #                     df2 = df_canshu.iloc[b]
        #                     end = 1
        #                     break
        #                 else:
        #                     continue
        #
        #         # y = np.delete(y, [0, 6], axis=0)
        #     print('需要修改的约束条件参数为')
        #     print(df2)
        #
        # elapsed = float((datetime.datetime.now() - start).seconds)
        # print("Time Used 4 All ----->>>> %f seconds" % (elapsed))
        #
        # print('finish')

        yy = y0
        mm = m0
        listb = []
        if success == 1:
            message = '约束条件合理，存在最优解'
            listd = ['约束条件合理，存在最优解']
            code = '1'
            print(message)
        else:

            message = '约束条件不合理，不存在最优解'
            print(message)
            print('无解，开始循环找需要修改的约束条件')
            code = '0'
            for i in range(1, 126):
                yi = Y[[i]]
                mi = M[[i]]
                Yy = np.concatenate((yy, yi), axis=0)
                Mm = np.concatenate((mm, mi), axis=0)
                success = judge_solution_exist(e1=Yy, f1=Mm)
                if success == 1:
                    yy = Yy
                    mm = Mm
                else:
                    yy = yy
                    mm = mm
                    # print(i)
                    listb.append(i)
                    # print(listb)
            df2 = df_canshu.iloc[listb]
            print('需要修改的约束条件参数为')
            print(df2)
            listd = df2.iloc[:, 1].to_list()
            print(listd)


        elapsed = float((datetime.datetime.now() - start).seconds)
        print("Time Used 4 All ----->>>> %f seconds" % (elapsed))

        print('finish')
        return message, listd